﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Interfaces;
using Controller;
using System.IO;

namespace GUI
{
    public partial class frmUdskrivRegning : Form
    {
        OrdreController oc = new OrdreController();
        List<Iordre> ordreliste = null;
        Iordre valgtOrdre;
        List<Ivare> vareListe;
        double prisUdenMoms;

        public frmUdskrivRegning()
        {
            InitializeComponent();
        }

        private void frmUdskrivRegning_Load(object sender, EventArgs e)
        {

            ordreliste = oc.HentAfsluttedeUfaktureredeOrdrer    ();

            foreach (Iordre item in ordreliste)
            {
                cmbOrdrer.Items.Add(item.Ordrenummer.ToString());
            }

        }

        private void cmbOrdre_SelectedIndexChanged(object sender, EventArgs e) 
        {
            int valgtOrdresNr = Convert.ToInt32(cmbOrdrer.SelectedItem.ToString());

            foreach (Iordre ordre in ordreliste)
            {
                if (ordre.Ordrenummer ==  Convert.ToInt32(cmbOrdrer.SelectedItem.ToString()))
                {
                    valgtOrdre = ordre;
                }
            }

            VareController vc = new VareController();
            vareListe = vc.HentAlleVarerTilOrdre(valgtOrdre);

            lvVareListe.Items.Clear();
            prisUdenMoms = 0;
            foreach (Ivare vare in vareListe)
            {
                string[] str = { Convert.ToString(vare.Varenummer), vare.Navn, Convert.ToString(vare.Pris)};
                ListViewItem lvItem = new ListViewItem(str);
                lvVareListe.Items.Add(lvItem);
                prisUdenMoms = prisUdenMoms + vare.Pris;
            }

            lblSamletPrisUdenMoms.Text = prisUdenMoms.ToString();
            lblMoms.Text = Convert.ToString(prisUdenMoms * 0.25);
            lblPrisMedMoms.Text = Convert.ToString(prisUdenMoms * 1.25);
        }

        public void printRegning()
        {

            KundeController kc = new KundeController();
            Ikunde kunde = kc.hentKunde(valgtOrdre.Kundenummer);
       
            Stream myStream;
            SaveFileDialog saveFileDialog1 = new SaveFileDialog();
            saveFileDialog1.Title = "Gem Faktura";
            saveFileDialog1.Filter = "Tekst-fil (*.txt)|*.txt";
            saveFileDialog1.FilterIndex = 2;
            saveFileDialog1.RestoreDirectory = true;

            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                if ((myStream = saveFileDialog1.OpenFile()) != null)
                {
                    StreamWriter fakturaTekst = new StreamWriter(myStream);

                    fakturaTekst.WriteLine("FAKTURA - " + valgtOrdre.Ordredato);
                    fakturaTekst.WriteLine("\n\n");
                    fakturaTekst.WriteLine("Kundenr: " + kunde.Kundenr);
                    fakturaTekst.WriteLine(kunde.Navn);
                    fakturaTekst.WriteLine(kunde.Adresse);
                    fakturaTekst.WriteLine(kunde.Postnummer.ToString() + " " +  kc.HentByForPostnr(kunde.Postnummer));
                    fakturaTekst.WriteLine("\n\n");
                    fakturaTekst.WriteLine("VARER");
                    fakturaTekst.WriteLine("VARENUMMER \t NAVN \t\t\t\t PRIS");
                    fakturaTekst.WriteLine("");

                    double samletPrisUdenMoms = 0;
                    foreach (Ivare vare in vareListe)
                    {
                        string varenummer = Convert.ToString(vare.Varenummer);
                        string navn = vare.Navn;
                        string pris = Convert.ToString(vare.Pris);
                        fakturaTekst.WriteLine(varenummer + "\t" + navn + "\t\t\t\t" + pris);
                        samletPrisUdenMoms = samletPrisUdenMoms + vare.Pris;
                    }
                    fakturaTekst.WriteLine("\n");


                    fakturaTekst.WriteLine("Ialt ex. Moms = " + samletPrisUdenMoms + "Kr.");
                    fakturaTekst.WriteLine("Ialt inkl. Moms = " + (samletPrisUdenMoms * 1.25) + "Kr.");
                    fakturaTekst.Close();
                    myStream.Close();
                }
            }
        }

        private void btnUdskriv_Click(object sender, EventArgs e)
        {
            printRegning();
        }

    }
}
